// 服务UUID
const servesid = '0000FFF0-0000-1000-8000-00805F9B34FB'
const alservesid = "FFF0"
// 上报特征码
const upcharacteristicId = "0000FFF1-0000-1000-8000-00805F9B34FB"
const alupcharacteristicId = "FFF1"
// 控制特征码
const writecharacteristicId = "0000FFF2-0000-1000-8000-00805F9B34FB"
const alwritecharacteristicId = "FFF2"

// 【1】初始化蓝牙
export function initBlue() {
	uni.openBluetoothAdapter({
		success(res) {
			console.log('初始化蓝牙成功')
			console.log(res)
		},
		fail(err) {
			console.log('初始化蓝牙失败')
			console.error(err)
		}
	})
}

/**
 * 获取特征值
 * @param {String} deviceId 设备ID，在【4】里获取到
 * @param {String} servesId 服务UUID，在【6】里能获取到
 */
export function getCharacteristics(deviceId, servesId) {
	uni.getBLEDeviceCharacteristics({
		deviceId: deviceId, // 设备ID，在【4】里获取到
		serviceId: servesId, // 服务UUID，在【6】里能获取到
		success: (res) => {
			console.log(res, "获取特征值")
		},
		fail(err) {
			console.error(err, "特征值失败")
		}
	})
}

/**
 * 监听消息
 * @param {String} deviceId 设备ID，在【4】里获取到
 * @param {String} servesId 服务UUID，在【6】里能获取到
 * @param {String} tezhengID 特征值，在【7】里能获取到
 */
export function notify(deviceId, servesId, tezhengID) {
	uni.notifyBLECharacteristicValueChange({
		deviceId: deviceId, // 设备ID，在【4】里获取到
		serviceId: servesId, // 服务UUID，在【6】里能获取到
		characteristicId: tezhengID, // 特征值，在【7】里能获取到
		state: val ? val : true,
		success: (res) => {
			console.log(res, "开启消息监听")
		},
		fail: (err) => {
			console.error(err, "消息监听错误")
		}
	})
}

/**
 * 下发指令
 */
export function bluesend(deviceId, buffer) {
	// #ifdef MP-WEIXIN
	uni.writeBLECharacteristicValue({
		deviceId: deviceId, // 设备ID，在【4】里获取到
		serviceId: servesid, // 服务UUID，在【6】里能获取到
		characteristicId: writecharacteristicId, // 特征值，在【7】里能获取到
		value: buffer,
		writeType: "write",
		success: (res) => {
			console.log(res, "写入成功")
		},
		fail: (err) => {
			console.error(err, "写入失败")
		}
	})
	// #endif
	// #ifdef MP-ALIPAY
	uni.writeBLECharacteristicValue({
		deviceId: deviceId, // 设备ID，在【4】里获取到
		serviceId: alservesid, // 服务UUID，在【6】里能获取到
		characteristicId: alwritecharacteristicId, // 特征值，在【7】里能获取到
		value: buffer,
		writeType: "write",
		success: (res) => {
			console.log(res, "写入成功")
		},
		fail: (err) => {
			console.error(err, "写入失败")
		}
	})
	// #endif
}

/**
 * 查看蓝牙状态
 */
export function bluestatus() {
	return new Promise((resolve, rejects) => {
		// #ifdef MP-WEIXIN
		uni.getConnectedBluetoothDevices({
			services: [servesid],
			success: (res) => {
				resolve(res)
			},
			fail: (err) => {
				rejects(err)
			}
		})
		// #endif
		// #ifdef MP-ALIPAY
		uni.getConnectedBluetoothDevices({
			services: [alservesid],
			success: (res) => {
				resolve(res)
			},
			fail: (err) => {
				rejects(err)
			}
		})
		// #endif
	})

}